package com.hxkj.service;

import com.github.pagehelper.PageInfo;
import com.hxkj.domain.po.Article;
import com.hxkj.domain.po.Tags;
import com.platform.common.domain.result.ResultDataStruct;
import com.platform.common.domain.result.ResultMessageStruct;
import com.platform.common.domain.to.PageTo;

import java.util.List;

/**
 * @InterfaceName TagsService
 * @Description TODO
 * @Author Mr.zheng
 * @Date 2018/6/7 11:59
 * @Version 1.0
 */
public interface TagsService {
    /**
    * @author Mr.zheng
    * @Description saveTags 新增tags标签
    * @Date 12:51 2018/6/7
    * @Param [tags]
    * @return com.platform.common.domain.result.ResultMessageStruct
    **/
    ResultMessageStruct saveTags(Tags tags) throws Exception;

    
    /**
    * @author Mr.zheng
    * @Description getTagsList 获取tags列表
    * @Date 13:05 2018/6/7
    * @Param [tags, pageParam]
    * @return com.github.pagehelper.PageInfo<com.hxkj.domain.po.Tags>
    **/
    PageInfo<Tags> getTagsList(Tags tags, PageTo pageParam) throws Exception;

    /**
    * @author Mr.zheng
    * @Description removerTags 删除标签tags
    * @Date 13:39 2018/6/7
    * @Param [tags]
    * @return com.platform.common.domain.result.ResultMessageStruct
    **/
    ResultMessageStruct removeTags(Tags tags) throws Exception;

    /**
    * @author Mr.zheng
    * @Description modifyTags 修改标签tags
    * @Date 13:54 2018/6/7
    * @Param [tags]
    * @return com.platform.common.domain.result.ResultMessageStruct
    **/
    ResultMessageStruct modifyTags(Tags tags) throws Exception;

    /**
    * @author Mr.zheng
    * @Description getShowTagsList 获取tags标签下拉框
    * @Date 15:41 2018/6/29
    * @Param [tags]
    * @return java.util.List<com.hxkj.domain.po.Tags>
    **/
    List<Tags> getShowTagsList(Tags tags) throws Exception;

    /**
     * @author Mr.zheng
     * @Description getQuoteCountTagsList 获取热点标签根据热点排序
     * @Date 8:51 2018/7/12
     * @Param [tags]
     * @return java.util.concurrent.Callable<java.util.List<com.hxkj.domain.po.Tags>>
     **/
    List<Tags> getQuoteCountTagsList(Tags tags) throws Exception;

    /**
     * @author  zzx
     * @Description getQuoteCountTagsList 获取热度前 20 的tags标签
     * @Date 8:51 2018/7/12
     * @Param [tags]
     * @return java.util.concurrent.Callable<java.util.List<com.hxkj.domain.po.Tags>>
     **/
    List<Tags> getTagsListByQuoteCount(Tags tags) throws Exception;

    /**
     * @author zzx
     * @Description  根据tagId  查询文章列表
     * @Date 8:51 2018/7/12
     * @Param [tags]
     * @return java.util.concurrent.Callable<java.util.List<com.hxkj.domain.po.Tags>>
     **/
    List<Article> getArticleByTag(Tags tags) throws Exception;

    /**
     * @author Mr.zheng
     * @Description getHotTagsList 获取热词标签
     * @Date 11:59 2018/7/20
     * @Param [tags]
     * @return java.util.List<com.hxkj.domain.po.Tags>
     **/
    PageInfo<Tags> getHotTagsList(Tags tags,PageTo pageTo) throws Exception;


    /**
     * @author Mr.zheng
     * @Description getHotTagsList 获取热门文章的标签列表
     * @Date 11:59 2018/7/20
     * @Param [tags]
     * @return java.util.List<com.hxkj.domain.po.Tags>
     **/
    List<Tags> getHotArticleAsTagsList(Article article)throws Exception;

    /**
    * @author Mr.zheng
    * @Description getTags 根据ID获取Tag标签
    * @Date 16:09 2018/7/20
    * @Param [tags]
    * @return com.platform.common.domain.result.ResultDataStruct<com.hxkj.domain.po.Tags>
    **/
    Tags getTags(Tags tags) throws Exception;
}
